package mid;

import java.util.HashMap;
import java.util.Map;

public class a567_字符串的排列 {
    public boolean checkInclusion(String s1, String s2) {
        if (s1.length() > s2.length()) return false;
        Map<Character, Integer> map = new HashMap<>();
        Map<Character, Integer> map2 = new HashMap<>();

        for (char c : s1.toCharArray()) {
            map.put(c, map.getOrDefault(c, 0) + 1);
        }
        for (int i = 0; i < s1.length(); i++) {
            map2.put(s2.charAt(i), map2.getOrDefault(s2.charAt(i), 0) + 1);
        }
        int right = s1.length() - 1;
        for (int i = 0; right < s2.length() - 1; i++) {
            if (map.equals(map2)) {
                return true;
            }
            map2.put(s2.charAt(i), map2.get(s2.charAt(i)) - 1);
            if (map2.get(s2.charAt(i)) == 0) {
                map2.remove(s2.charAt(i));
            }
            ++right;
            map2.put(s2.charAt(right), map2.getOrDefault(s2.charAt(right), 0) + 1);
        }
        return map.equals(map2);
    }
}
